home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok11 / r.o.m. / m2sources / stringinout.def < prev    next >
Text File  |  1993-11-04  |  4KB  |  82 lines

  1. DEFINITION MODULE StringInOut;
  2. (*
  3.   Created:   10.11.1987
  4.   Changed:   18.1.88/08.02.88/29.02.88 by 
  5.              Stefan Salewski
  6.              Stolper Weg 3
  7.              2160 Stade   West-Germany
  8.              Tel: 04141/61130
  9.              
  10.   Note: compiled with AMIGA Modula-2 System by AMSoft Version from 5.5.88
  11.    
  12.   This Module may be freely copied. But please
  13.   leave my name in. Thanks....Stefan  
  14.   
  15.   Dieser Modul dient zur (komfortablen) Ein- und Ausgabe von Strings und
  16.   zun Einlesen einzelner Zeichen.
  17.   OpenNewWindow oeffnet ein Intuition-Window. Die groesse wird in Zeichen
  18.   angegeben, die linke obere Ecke in Pixel. Das Fenster erhaelt die Gadgets,
  19.   die der Variablen wFlags entsprechen. Ist wFlags=FlagSet{}, so hat das
  20.   Window keinen Titelbalken und es passen bei maximaler Hoehe auch im 60
  21.   Zeichenmodus 27 Textzeilen ins Window, mit Titel nur 26. Ist close in
  22.   wFlags enthalten, so bekonnt man ein closeWindow-Message beim anklicken
  23.   dieses Gadgets und muss sie selber auswerten. Das Window kann auch mit einem
  24.   Menu versehen werden, dann muessen die Menu-Messages aber vom Dir ausgewertet
  25.   werden. Es koennen mehrere Fenster unabhangig voneinander benutzt 
  26.   werden. SetColor setzt die vier Workbench-Farben. GetPos bzw.
  27.   SetPos liest bzw. setzt die Cursorposition(Spalten- und Zeilenzahl).
  28.   Links-Oben => Spalte=x=0 und Zeile=y=1
  29.   ReadString liest ueber ein StringGadget eine Zeichenkette ein.
  30.   Jetzt werden von ReadString und GetKey nicht mehr alle Messages im UserPort
  31.   verbraucht,sondern nur Tastatureingaben. Andere Message werden nicht
  32.   vom UserPort entfernt, sondern beenden die Procedure( gleichzeitig bekommt
  33.   inputOK den Wert FALSE). Dadurch koennen
  34.   sie vom Hauptprogramm ausgewertet werden ( z.B. Menuoperationen).
  35.   Die IDCMPFlags des Windows werden jetzt am ende der Procedure restauriert.
  36.   Nachdem ReadString durch druecken der Return- oder Enter-Taste oder
  37.   durch deaktivieren mit der Maus beendet
  38.   wurde, springt der (unsichtbare) Cursor auf den Anfang der naechnsten
  39.   Zeile. WriteString scheibt an die momentane Cursorposition. Ist
  40.   NewLine=TRUE, so wird nach der Schreiboperation auf den Anfang der
  41.   naechsten Zeile gesprungen bzw. der Bildschirm wird nach oben
  42.   gescrollt. Bei NewLine=FALSE bleibt der Cursor hinter dem geschriebenen
  43.   Wort stehen.Es kann an dieser Position weitergeschrieben oder gelesen
  44.   werden. Wird der rechte Rand des Fensters erreicht,bleibt der Cursor
  45.   auf der letzten Spalte stehen. GetKey wartet auf das druecken einer
  46.   Taste(ohne Return) und liefert das entsprechnende Zeichen.
  47.   Durch SetClear wird bestimmt, ob der vorhandene Wert von
  48.   str bei der Stringeingabe ins StringGadget uebernommen werden soll,
  49.   oder ob er geloescht werden soll.
  50.  
  51. *)
  52.   FROM Intuition IMPORT WindowPtr;
  53.   TYPE 
  54.     StrGadgetLaenge=[1..79];
  55.     Flags=(close,drag,depth);
  56.     FlagSet= SET OF Flags;
  57.   VAR 
  58.     inputOK:BOOLEAN;
  59.  
  60.   PROCEDURE OpenNewWindow(VAR wP:WindowPtr;x,y,w,h:INTEGER;wFlags:FlagSet;
  61.                           titel:ARRAY OF CHAR);
  62.   PROCEDURE CloseNewWindow(wP:WindowPtr);
  63.  
  64.   PROCEDURE ClearWindow(wP:WindowPtr);
  65.   PROCEDURE SetColors(wP:WindowPtr;background,input,output:INTEGER);
  66.   PROCEDURE SetClear(wP:WindowPtr;clearInput:BOOLEAN);
  67.   PROCEDURE GetPos(wP:WindowPtr;VAR x,y:INTEGER);
  68.   PROCEDURE SetPos(wP:WindowPtr;x,y:INTEGER);
  69.  
  70.   PROCEDURE GetKey(wP:WindowPtr):CHAR;
  71.   PROCEDURE ReadString(wP:WindowPtr;text:ARRAY OF CHAR;
  72.                        VAR str:ARRAY OF CHAR;sichtbareZeichen:StrGadgetLaenge);
  73.   PROCEDURE WriteString(wP:WindowPtr;s:ARRAY OF CHAR;newLine:BOOLEAN);
  74.  
  75.   PROCEDURE DeleteChar(wP:WindowPtr;chars:INTEGER);
  76.   (* DeleteChar(w,5) entspraeche WriteString(w,'     ',FALSE) wenn
  77.      die geschriebenen Leerzeichen Hintergrundfarbe haetten.
  78.      Die Leerzeichen sind aber farblos (nur Cursorbewegung)
  79.   *)
  80.        
  81. END StringInOut.def
  82.